package com.qijian.maindata.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qijian.common.core.domain.AjaxResult;
import com.qijian.maindata.domain.InspectionScheme;
import com.qijian.maindata.domain.query.InspectionSchemeQuery;
import com.qijian.maindata.domain.vo.InspectionBomVo;
import com.qijian.maindata.domain.vo.InspectionSchemeVo;
import com.qijian.maindata.domain.vo.UpdateItemStorageRequestVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;


/**
 * 检验方案-新Service接口
 *
 * @author qijian
 * @date 2024-02-02
 */
public interface IInspectionSchemeService extends IService<InspectionScheme> {
    boolean saveVo(InspectionSchemeVo inspectionSchemeVo);

    InspectionSchemeVo getInfo(Long id);

    /***
     * 导出检验方案模板
     * @param response
     */
    AjaxResult exportTemplate(HttpServletResponse response) throws Exception;

    /***
     * 上传检验方案
     * @param file 文件
     * @throws Exception 上传异常
     */
    void doImport(MultipartFile file) throws Exception;

    /***
     * 上传zip压缩文件
     * @param file 文件
     * @param schemeId  检验方案id
     * @return
     */
    boolean importZip(Long schemeId,MultipartFile file);

    //上传图片覆盖校验
    AjaxResult importZipCheck(Long schemeId,MultipartFile file);

    /***
     * 更新检验项上的附件
     * @param request
     * @return
     */
    boolean updateItemStorage(UpdateItemStorageRequestVo request);

    /***
     * 获取未绑定6个检验计划的产品编码
     */
    List<InspectionBomVo> selectUnbindBomVo(Integer defaultCnt);

    /***
     * 获取6个默认的检验方案
     * @return
     */
    List<InspectionSchemeVo> getDefaultScheme();

    boolean refreshInspection();

    AjaxResult doImportCheck(MultipartFile file) throws Exception;
    /***
     * 根据(开工令，报验类型),获取检验项及明细,供外协报验选取
     * @return
     */
    Page<InspectionSchemeVo>  pageForOutInspection(Page<InspectionScheme> page, QueryWrapper<InspectionSchemeQuery> queryWrapper);
}
